<html>

<head>
    <!-- Load TensorFlow.js -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.9.0"> </script>

    <!-- Place your code in the script tag below. You can also use an external .js file -->
    <script>
        const shape = [2, 3] // 2行3列
        const a = tf.tensor([1, 2, 3, 4, 5, 6], shape) // shape对应的数字数量和数组要一致
        a.print() // 打印张量


        // 但是，为了构造低秩张量，我们推荐使用下面的函数来增强代码的可读性：
        // tf.scalar（零维）, tf.tensor1d（一维）, tf.tensor2d（二维）, tf.tensor3d（三维）、tf.tensor4d（四维）以及 tf.ones（值全是1）或者tf.zeros（值全是0）
        const b = tf.scalar(3.1415926)
        b.print()

        const c = tf.tensor2d([[11, 1, 1], [3, 5, 1]])
        c.print()

        // const f = tf.tensor3d([[1, 2, 3], [2, 3, 4], [3, 4, 4]])
        // f.print()

        const d = tf.zeros([2, 3])
        d.print() // 输入2行3列值为0的张量

        const e = tf.ones([3, 3])
        e.print() // 输入3行3列值为1的张量
        // 在TensorFlow.js中，张量是不变的; 一旦创建你就不能改变它们的值。 但是，您可以对它们执行操作来生成新的张量。


        // 变量 variable 是通过张量初始化得到的， 值可变，可使用变量assign方法分配一个新的tensor到这个变量上
        const initialValues = tf.ones([5])
        const biases = tf.variable(initialValues)
        biases.print() // [1, 1, 1, 1, 1]

        const updateValues = tf.tensor2d([0, 1, 0, 1, 0]) // 后面的完全覆盖前面的,前后格式要一样，都是1d，试了2d不行
        biases.assign(updateValues)
        biases.print() // [0, 1, 0, 1, 0]

        // 结论，变量由张量生成，且变量可变张量不可变
    </script>
</head>

<body>
</body>

</html>